Problem
【HNOI2011】卡农
Description
Input
Output
Sample
标签:计数DP
Solution
考试时没想出来,不过听了觉得挺简单的。
首先把每个片段看成一个数,每个音阶看成该数的一位,则每位为或,题意可以转化为求在中选个数使其异或和为的方案数。我们先不考虑无序性,求出所有排列后除即为答案。
设为选个数的方案数,考虑先选个数,最后一个数即为前面的数的异或和,这样才能使总异或和位。那么如果不考虑限制,直接选则有种选法。
只可能有两种不合法的情况,即最后一个数位或最后一个数在前面个数种出现过。对于第一种情况,不合法方案数为选个数的合法方案数,即为。而对于第二种情况,去掉相同的数后,其他数异或和为,这样就有中方案,而去掉的数的位置有种选法,去掉的数的值有种选法,故共会去掉种不合法方案。
于是,方程为
Code
1 |
|